package com.geniusk.model.mapper;

import com.geniusk.model.pojo.ChatMsg;
import com.geniusk.model.vo.MessageVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface ChatMsgMapper {

    /**
     * 查询未读消息数量
     * @param userId 用户ID
     * @return 消息数量
     */
    int selectUnreadMsgCountByUserId(Long userId);

    /**
     * 查询未读消息数量
     * @param chatMsg 发送者接收者
     * @return 消息数量
     */
    int selectUnreadMsgCount(ChatMsg chatMsg);

    /**
     * 查询对应ID存在消息的用户ID
     * @param userId 用户ID
     * @return 用户ID
     */
    List<Long> selectExistChatMsgUserId(Long userId);
    /**
     * 查询最新消息
     * @param chatMsg 用户
     * @return 最新消息
     */
    MessageVO selectLatestChatMsg(ChatMsg chatMsg);

    /**
     * 查询聊天信息分页数据
     * @param chatMsg 查询条件
     * @return 分页数据
     */
    List<ChatMsg> selectChatMsgByPage(ChatMsg chatMsg);

    /**
     * 新增聊天信息
     * @param chatMsg 设备信息
     * @return 新增行数
     */
    int insertChatMsg(ChatMsg chatMsg);

    /**
     * 签收消息
     * @param ids 聊天信息ID
     * @return 签收行数
     */
    int signChatMsgByIds(Long[] ids);

    /**
     * 根据消息ID查询消息
     * @param msgId 消息ID
     * @return 消息
     */
    ChatMsg selectChatMsgById(Long msgId);

    /**
     * 发送消息删除
     * @param ids 聊天信息ID
     * @return 删除行数
     */
    int sendDeleteByIds(Long[] ids);

    /**
     * 接收消息删除
     * @param ids 聊天信息ID
     * @return 删除行数
     */
    int receiveDeleteByIds(Long[] ids);
}